﻿using System;

/// <summary>
/// DateUtil の概要の説明です
/// </summary>

namespace SpdWeb.Util {

    public static class DateUtil {

        /// <summary>
        /// 現在日付を指定された文字列型で返却
        /// </summary>
        public static string getDate(string format) {
            return DateTime.Now.ToString(format);
        }

        /// <summary>
        /// dateTimeを指定された文字列型で返却
        /// </summary>
        public static string getDate(string format, DateTime dateTime)
        {
            return dateTime.ToString(format);
        }

        /// <summary>
        /// stringをDateTime型に変換します
        /// </summary>
        public static DateTime simpleDateFormat(string dt) {
            return DateTime.Parse(dt);
        }

        /// <summary>
        /// stringをDateTime型に変換します
        /// </summary>
        public static DateTime DateFormat(string dt) {
            return DateTime.ParseExact(dt, "yyyy/MM/dd HH:mm:ss", null);
        }

        /// <summary>
        /// 使用期限(yymmdd型)をyyyy/mm/dd形式で取得します。
        /// 使用期限の日付が00のときは月末の日付を返します。
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string getLimitDate(string dt)
        {
            if (string.IsNullOrEmpty(dt))
            {
                return null;
            }
            //日付が00の場合
            if (dt.EndsWith("00"))
            {
                String s = dt.Substring(0, 4) + "01";
                var dateTime = DateTime.ParseExact(dt, "yyMMdd", null);
                //月末の日付を返す
                return dateTime.AddMonths(1).AddDays(-1).ToString("yyyy/MM/dd");
            }
            else
            {
                return DateTime.ParseExact(dt, "yyMMdd", null).ToString("yyyy/MM/dd");
            }
        }

        /// <summary>
        /// 日付の妥当性チェック
        /// </summary>
        public static Boolean isDate(string dt) {
            Boolean result = true;
            try
            {
                DateTime.Parse(dt);
            }
            catch (Exception e)
            {
                result = false;
            }

            return result;
        }
    }

}